#ifndef _AMERICO_TIME_MANAGER_SINGLETON_H_
#define _AMERICO_TIME_MANAGER_SINGLETON_H_

#include "ctime.h"

namespace Clock
{
	class TimeManager;

	enum ReadType
	{
		ReadElapsedTime,
		ReadTotalTime
	};

	class Singleton
	{
	private:
		static TimeManager *ourTimeManager;
		static unsigned int ourManagersInUse;

	public:
		static void StartManager();
		static void StopManager();
		static void Create(const Clocks &aTimer);
		static void AttachTimer(const Clocks &aTimer);
		static void AttachTimer(const Clocks &aTimerToAttach, const Clocks &aTimerToAttachTo);
		static void StartClock(const Clocks &aTimer);
		static void StopClock(const Clocks &aTimer);
		static Time Read(const ReadType &aReadType = ReadTotalTime);
		static Time Read(const Clocks &aTimer, const ReadType &aReadType = ReadTotalTime);
		static void Update();

	};
};

#endif